Case classes are just like regular classes with a few key differences, which are below:
1. A case class can be created using the keyword case class instead of simply class.
2. Case classes promote immutability. That's why the class parameters, if not mentioned, will be public vals by default.
Note: It is also possible to use vars in case classes, but this is discouraged
3. Copy method for creating new instances easily.
4. Provides easy Pattern matching
5. Instances of case classes are compared by structure and not by reference